package com.ruoyi.web.controller.tool.designpattern.creationalPatterns.singleton;

/**
 * TODO
 *
 * @author Hack2003
 * @date 2024/3/20 14:46
 **/
class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有构造函数，防止外部实例化
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    public void doSomething() {
        System.out.println("Singleton instance is doing something.");
    }
}

/**
 * 单例模式是一种创建型设计模式，用于确保一个类只有一个实例，
 * 并提供一个全局访问点。这种模式通常在需要限制一个类只能有一个实例的情况下使用，
 * 比如线程池、缓存、日志对象等。
 */
public class Test {
    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
        singleton.doSomething();
        Singleton singletonx = Singleton.getInstance();
        singleton.doSomething();
        System.out.println("单例模式"+singleton+"..."+singletonx);
    }
}
